<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* // 构造函数
        function Person(name,age){
            this.name = name;
            this.age = age;
            this.jump = function(){
                console.log('yangyang一跳8米高！！')
            }
        }
        // 实例对象
        let p1 = new Person('xiaohong',10);
        console.log(p1);

        // 添加到原型对象上
        Person.prototype.hobby = function(){
            console.log('洋洋的hobby是帅哥！！');
        }
        Person.prototype.sex = '女';

        // 添加到Person自身上
        Person.wangba = function(){
            console.log('王霸之气');
        }
        Person.color = 'green';

        console.dir(Person);

        // Person自身上的方法如何使用
        Person.wangba();
        console.log(Person.color);
        // 原型对象上的属性和方法
        p1.hobby();
        console.log(p1.sex);
        // 实例对象自身上的方法
        console.log(p1.age);
        p1.jump(); */

        // class类的写法
        class Person{
            // 在class类中默认是严格模式
            // 构造器
            constructor(name,age){
                this.name = name;
                this.age = age;
                this.jump = function(){
                    console.log('class类的写法')
                    console.log(this);//实例对象
                }
            }
            // 将该方法添加到原型对象上
            hobby(){
                console.log('吃肉，振刀');
                console.log(this);//原型对象上的方法通过实例对象.hobby()  实例对象
            }
            // 在所有的实例对象上添加该属性
            sex = '男'
            // 在Person上添加属性和方法(静态的属性和方法)
            static wangba(){
                console.log('王霸之气');
                console.log(this);//Person.wangba()   Person
            }
            static color = 'pink'
        }
        // 实例对象
        let p2 = new Person('sunwei',23);
        console.log(p2);

        p2.jump();
        p2.hobby();
        Person.wangba();

        let test = p2.jump;
        test();

        /* 
        this指向？
        在全局中 this window
        在全局中的函数中this  window
        作为对象的方法调用时，this指向当前对象
        构造函数中this指向新形成的实例对象
        在DOM事件中，this指向绑定事件的DOM对象
        在严格模式中 全局中this禁止指向window 指向undefined
        箭头函数没有this指向，它指向外层函数的this指向
        */



    </script>
</body>
</html>